

#ifndef __ListaOrdenada_h__
    #define __ListaOrdenada_h__

#if !defined (NULL)
    #define NULL 0
#endif


#if !defined (FALSE)
    #define FALSE 0
#endif


#if !defined (TRUE)
    #define TRUE 1
#endif



typedef enum
{
    LO_PRIMERO,
    LO_SIGUIENTE,
    LO_ANTERIOR

}TMovimiento_Lo;


typedef struct TNodoSimple
{
    void *Elem;
    struct TNodoSimple *Siguiente;

}TNodoSimple;


typedef struct
{
    TNodoSimple *Primero, *Corriente;
    int TamanioDato;

}TListaOrdenada;




void lo_Crear (TListaOrdenada *pLo, int TamanioDato);

void lo_Vaciar(TListaOrdenada *pLo);

int lo_Vacia(TListaOrdenada Lo);

void lo_ObtenerCorriente(TListaOrdenada Lo, void *pE);

void lo_ModifCorriente(TListaOrdenada *pLo, void *pE);

int lo_MoverCorriente (TListaOrdenada *pLo, TMovimiento_Lo M);

void lo_BorrarCorriente(TListaOrdenada *pLo);

int lo_Insertar(TListaOrdenada *pLo, TMovimiento_Lo M, void *pE);

int lo_InsertarOrdenado(TListaOrdenada *pLo, void *Elem);

#endif
